package com.xixi.demo02.dao;

import com.xixi.demo02.model.User;
import com.xixi.demo02.util.DbUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

////建立完index.jsp登录页面，进行第二步的servlet  进行第三步连接数据库,第四步去封装一个User类，针对userName和password,还有一个主键id
//第五步就是去建立一个UserDaoImp
public class UserDaoImp implements UserDao{
//在重写里面去实现登录的功能
//需要带过来的账号和密码对数据库进行查询，如果有就查找成功，返回成功，否则失败
//1.获取数据库的连接
//2.准备sql语句
//3.执行sql语句后获取结果并返回
//4.释放资源
//1.获取数据库的连接
    @Override
    public User userLogin(User user) {
        Connection connection= null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
//1.获取数据库
            connection = DbUtil.getConnection();
//2.准备数据库sql
            String sql="select * from t_user where userName= ? and password=?";
//3.执行sql语句获取并返回
            preparedStatement = connection.prepareStatement(sql);

            //这里是把？所占的位置给添了，所以才有的一下三句
            preparedStatement.setString(1,user.getUserName()); //userName=?
            preparedStatement.setString(2,user.getPassword());  //password=?
            //填完位置以后需要执行一下，执行查询来获取结果集
            resultSet = preparedStatement.executeQuery();
            //这里来判断 是否成功
            if(resultSet.next()){
                //拿着获取到的结果集来初始化
                User user1=new User(resultSet.getString("userName"),resultSet.getString("password"));
                System.out.println("这里查询成功");
                return user1;//说明查询成功
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //4.释放资源
            DbUtil.closeResource(connection,preparedStatement);
            if (null !=resultSet){//
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
}
